#ifndef SBOTPLUGINMANGER_H
#define SBOTPLUGINMANGER_H

#include "SbotPlugin.h"

#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QJsonObject>
#include <QObject>
#include <QPluginLoader>
#include <QQmlEngine>
#include <QString>

class SbotPluginObject {
  public:
    SbotPluginObject(SbotPlugin* plugin, QJsonObject metaData) : sbotPluginObj(plugin), metaData(metaData) {}

  public:
    SbotPlugin* sbotPluginObj;  // 插件元对象
    QJsonObject metaData;       // 插件元信息
};

class SbotPluginManger : public QObject {
    Q_OBJECT

  private:
    QList<SbotPluginObject*> plugins;  // 插件对象列表

  public:
    SbotPluginManger();
    ~SbotPluginManger();
    SbotPluginObject* GetPluginObj();        // 获取插件对象
    int InitAllPlugin(QQmlEngine* engine);   // 初始化所有插件
    int RefreshPlugin(const QString& path);  // 刷新插件池
    QObject* GetPluginUi(int index);         // 获取插件界面
    int GetPluginNum();                      // 获取插件数量
    // const SbotPluginInformation* GetPluginInfo(int index);  //获取插件信息
    const QString& GetPluginName(int index);  //获取插件名称
    const QIcon& GetPluginLogo(int index);    // 获取插件logo
    int StartPluginThread(int index);         // 启动插件线程
    void StopPluginThreadAll();               // 退出所有线程
};

#endif
